D3 序数比例尺
序数比例尺(Ordinal Scale
)所定义的定义域
都是离散且不会连续的,即为序数比例尺
,通常是在场景中最为常用的比例尺之一,如通过输入一个离散值来获取得到另一个离散的值,我们就可以通过使用序数比例尺来实现。
ID | DA | FA |
---|---|---|
d3.scale.ordinal() | 定义序数比例尺 | |
ordinal(y) | 输入定义域离散值 ,返回值域内的一个离散值 |
|
ordinal.domain() | 设定或获取定义域 | |
ordinal.range() | 设定获取值域 | |
ordinal.rangePoints(间隔(interval) [间距(padding) ]) |
代替 range() 定义值域,并接受一个连续区间,之后根据定义与中离散值的数量将其分段。之后的出的分段值用于值域中的离散值 |
|
ordinal.rangeRoundPoints ,与 ordinal.rangePoints() 作用一样,但是结果会被取整 |
||
ordinal.rangeBands(间隔 (interval) [内边距 (padding) ]) |
代替 range() 定义值域,与rangePoints 类似,但分段方法不同 |
|
ordinal.rangeRoundBands() ,与rangeBands 类似,但结果会被取整 |
||
ordinal.rangeBand() | 返回使用 rangeBands() 设定后的每一段参数 |
|
ordinal.rangeExtend() | 返回一个数组,数组中存放着最大值 以及一个最小值 |
rangePoints()
1 | var ordinal = d3.scale.ordinal() |
在上述的code中,当定义域
内数据大于值域
时,那么多出的定义域值将会重新轮回一遍值域
为止。但此方法来定义值域或许有些麻烦,所以我们可以通过使用rangePoints()
来解决:
1 | var ordinal = d3.scale.ordinal() |
通常,我们使用rangePoints(interval,padding)
,其中interval
为[0,200]
,而padding
是一个缺省值,之后计算得出step
是根据定义域与数值计算得到的值,因为我们并没有设置padding
,所以间距默认为50
,而计算出的值就是圆的对应点。:
1 | var ordinal = d3.scale.ordinal() |
当 padding
那边距设置为5
,那么当step * padding / 2
时,那么将会的出第一个圆的位置坐标,在下述 code 中:
1 | var ordinal = d3.scale.ordinal() |
当 rangePoints
替换为rangeRoundPoints()
来四舍五入取整的数据,此时如果上述 code 输出55.55555555555
,那么将会被四舍五入为56
。就如四舍五入后的结果为56、78、100、122、144
,那么我们从55.55555555555556 - 77.77777777777777
可以得知,step
为22.222222222222214
,那么通过step * padding / 2
将会得出第一个结果的坐标。
RangeBands()
rangeBands()与rangePoints
同样是代替 range()
定义值域,与rangePoints
类似,其分段方法为outerPadding、padding、outerPadding
其中outerPadding
主要是边界的空白参数(默认为0)。
1 | var ordinal = d3.scale.ordinal() |
在上述的 code 中,我们首先定义了interval
为[0,200]
,将padding
与outerPadding
分别设置为2和3
,那么输出的信息将会是最终是圆的位置坐标。那么最终经过计算,他的outerPadding
与Padding
分别22.22222222222223、22.222222222222214
。通常从字面上意思来进行理解outherPadding
就是圆开头与结尾
处即两边的空白距离,就为outerPadding